package project02.controller.gtw;

import java.util.Calendar;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

import project02.cool.Consts;
import project02.cool.Helper;
import project02.cool.Util;
import project02.model.UserInfo;

public class IndexController extends Controller {

    private Helper helper = Helper.getInstance();
    private Util util = Util.getInstance();

    @Override
    public Navigation run() {

        // ユーザ情報をセッションから取得
        UserInfo user = sessionScope("userInfo");

        // 現在日時を取得
        Calendar cal = Calendar.getInstance();
        cal = helper.getGMT8Cal(cal);

        // 同一年月日で同じ時間に出勤したデータがある場合は登録不可(PK重複回避)
        if (!util.chkGtw(user.getUserId(), cal)) {
            requestScope("result", "<script type=\"text/javascript\"> window.alert('すでに出勤しております.'); </script>");
            return forward("../");
        }

        // 出勤データの登録
        try {
            util.setGtw(user.getUserId(), cal);
        } catch (Exception e) {
            requestScope("result", "<script type=\"text/javascript\"> window.alert('出勤処理に失敗しました.'); </script>");
            return forward("../");
        }
        requestScope("result", "<script type=\"text/javascript\"> window.alert('出勤処理を完了しました.'); </script>");

        // 以下メッセージの取得、表示
        String message = util.getMessage(user.getUserId(), cal, Consts.gtwMsg);
        if (message != null && message != "") {
            String editMsg = "";
            editMsg += "<script type=\"text/javascript\"> window.alert('";
            editMsg += message;
            editMsg += "'); </script>";
            requestScope("messageData", editMsg);
        }

        return forward("../");
    }

}
